মডেল ডেপ্লয়মেন্ট একটি গুরুত্বপূর্ণ ধাপ, যেখানে প্রশিক্ষিত মডেলটি ব্যবহারকারী অথবা অন্যান্য সিস্টেমের কাছে অ্যাক্সেসযোগ্য করা হয়। এর মধ্যে REST API (Representational State Transfer API) ব্যবহার করা একটি জনপ্রিয় পদ্ধতি, যার মাধ্যমে ওয়েব অ্যাপ্লিকেশন বা অন্যান্য ক্লায়েন্টরা HTTP রিকোয়েস্ট পাঠিয়ে মডেলকে কল করতে পারে।
এখানে, Python এ একটি মডেল ডেপ্লয় করার জন্য REST API তৈরি করার সাধারণ ধাপগুলো দেওয়া হয়েছে, যেখানে Flask ফ্রেমওয়ার্ক ব্যবহার করা হয়েছে।
ধাপ ১: প্রয়োজনীয় প্যাকেজ ইনস্টল করা
প্রথমে, আপনাকে Flask এবং অন্যান্য প্রয়োজনীয় প্যাকেজগুলো ইনস্টল করতে হবে।
pip install flask flask-restful scikit-learn
এখানে:
- Flask: একটি মিনি ওয়েব ফ্রেমওয়ার্ক যা API তৈরি করতে ব্যবহৃত হয়।
- flask-restful: Flask এর জন্য একটি RESTful API প্লাগইন।
- scikit-learn: মেশিন লার্নিং মডেলগুলির জন্য একটি পপুলার লাইব্রেরি।
ধাপ ২: মডেল তৈরি করা এবং সংরক্ষণ করা
এখানে একটি সাধারণ মডেল তৈরি করা হলো scikit-learn ব্যবহার করে। আপনি যেকোনো মডেল ব্যবহার করতে পারেন, তবে আমরা এখানে একটি সহজ Logistic Regression মডেল ব্যবহার করছি।
from sklearn.datasets import load_iris
from sklearn.model_selection import train_test_split
from sklearn.linear_model import LogisticRegression
import joblib
# আইরিস ডেটাসেট লোড
data = load_iris()
X = data.data
y = data.target
# ডেটাসেট বিভক্ত করা
X_train, X_test, y_train, y_test = train_test_split(X, y, test_size=0.3)
# মডেল তৈরি
model = LogisticRegression(max_iter=200)
model.fit(X_train, y_train)
# মডেল সংরক্ষণ
joblib.dump(model, 'iris_model.pkl')
এখানে মডেলটি প্রশিক্ষিত হয়ে iris_model.pkl নামে ফাইল হিসেবে সংরক্ষিত হচ্ছে।
ধাপ ৩: Flask API তৈরি করা
এখন Flask দিয়ে একটি REST API তৈরি করা হবে যা মডেলকে সার্ভ করবে। এখানে একটি API তৈরি করা হচ্ছে যা HTTP POST রিকোয়েস্টের মাধ্যমে মডেল ইনফারেন্স করবে।
from flask import Flask, request, jsonify
from flask_restful import Api, Resource
import joblib
import numpy as np
# Flask অ্যাপ্লিকেশন শুরু
app = Flask(__name__)
api = Api(app)
# মডেল লোড করা
model = joblib.load('iris_model.pkl')
class Predict(Resource):
def post(self):
# ইনপুট ডেটা পাওয়া
data = request.get_json(force=True)
features = np.array(data['features']).reshape(1, -1)
# প্রেডিকশন করা
prediction = model.predict(features)
# ফলাফল রিটার্ন করা
return jsonify({'prediction': int(prediction[0])})
# রুট রেজিস্টার করা
api.add_resource(Predict, '/predict')
if __name__ == '__main__':
app.run(debug=True)
কোডের ব্যাখ্যা:
- Flask অ্যাপ তৈরি করা হয়েছে, এবং Flask-RESTful এর মাধ্যমে REST API তৈরি করা হয়েছে।
- Predict ক্লাসটি HTTP POST রিকোয়েস্ট গ্রহণ করে এবং features এর উপর ভিত্তি করে মডেল থেকে প্রেডিকশন করে।
- মডেলটি joblib.load() দিয়ে লোড করা হচ্ছে এবং numpy ব্যবহার করে ইনপুট ডেটাকে সঠিক ফরম্যাটে রূপান্তরিত করা হচ্ছে।
ধাপ ৪: API চালু করা
এখন আপনার Flask API চালু করতে পারেন। কোডটি চালানোর পর, Flask সার্ভার http://127.0.0.1:5000/predict রুটে সক্রিয় থাকবে।
python app.py
ধাপ ৫: API টেস্ট করা
API টেস্ট করার জন্য আপনি Postman বা cURL ব্যবহার করতে পারেন।
Postman:
- Method: POST
- URL:
http://127.0.0.1:5000/predict - Body:
- Select raw and choose JSON format.
Add the following JSON data:
{ "features": [5.1, 3.5, 1.4, 0.2] }
এখানে features হল মডেল ইনপুট হিসেবে ব্যবহৃত বৈশিষ্ট্যগুলি।
cURL (Command Line):
curl -X POST -H "Content-Type: application/json" -d '{"features": [5.1, 3.5, 1.4, 0.2]}' http://127.0.0.1:5000/predict
এটি মডেলের প্রেডিকশন রিটার্ন করবে।
ধাপ ৬: API Deployment (পাবলিক সার্ভারে ডেপ্লয়মেন্ট)
আপনার API তৈরি হয়ে গেলে, আপনি এটি পাবলিক সার্ভারে ডেপ্লয় করতে পারেন। জনপ্রিয় ডেপ্লয়মেন্ট প্ল্যাটফর্মগুলো হলো:
- Heroku
- AWS (Amazon Web Services)
- Google Cloud
- Microsoft Azure
ডেপ্লয়মেন্টের জন্য, আপনাকে একটি Procfile (Heroku এর জন্য) তৈরি করতে হবে এবং আপনার মডেল ফাইল সহ সমস্ত কোডগুলি গিট রেপোজিটরি থেকে ডেপ্লয় করতে হবে।
সারাংশ
এভাবে, আপনি একটি প্রশিক্ষিত মডেলকে Flask ব্যবহার করে REST API হিসেবে ডেপ্লয় করতে পারেন। এই API অন্যান্য অ্যাপ্লিকেশন বা সিস্টেমের কাছে মডেল ইনফারেন্স প্রদান করবে এবং যেকোনো ওয়েব বা মোবাইল অ্যাপ্লিকেশন থেকে এই API কল করা যাবে।
Read more